package vip.xiaonuo.supplier.modular.business.businessMain.param;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 业务主表编辑参数
 *
 * @author Mr.wu
 * @date  2025/03/26 11:03
 **/
@Getter
@Setter
public class SupplierBusinessMainEditParam {

    /** 业务ID */
    @Schema(description = "业务ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "id不能为空")
    private String id;

    /** 业务类型 */
    @Schema(description = "业务类型")
    private String businessType;

    /** 业务单号 */
    @Schema(description = "业务单号")
    private String businessCode;

    /** 业务项目 */
    @Schema(description = "业务项目")
    private String businessProjectId;

    /** 业务对象 */
    @Schema(description = "业务对象", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotBlank(message = "businessObjectId不能为空")
    private String businessObjectId;

    /**业务对象名称 */
    @Schema(description = "业务对象名称")
    private String businessObjectName;

    /**业务对象地址 */
    @Schema(description = "业务对象地址")
    private String businessObjectAddress;

    /**业务对象电话 */
    @Schema(description = "业务对象电话")
    private String businessObjectTel;

    /**业务对象应收（付）结算前余额*/
    @Schema(description = "业务对象应收（付）结算前余额")
    private BigDecimal businessObjectPayableBefore;

    /**业务对象应收（付）结算后余额*/
    @Schema(description = "业务对象应收（付）结算后余额")
    private BigDecimal businessObjectPayableAfter;

    /** 经手人ID */
    @Schema(description = "经手人ID")
    private String businessHandlerId;

    /** 业务员ID */
    @Schema(description = "业务员ID")
    private String businessSalesmanId;

    /** 出货门店 */
    @Schema(description = "出货门店")
    private String businessShippingStoreId;

    /** 出货仓库 */
    @Schema(description = "出货仓库")
    private String businessShippingStorageId;

    /** 入库门店 */
    @Schema(description = "入库门店")
    private String businessStorageStoreId;

    /** 入库仓库 */
    @Schema(description = "入库仓库")
    private String businessStorageStorageId;

    /** 运单号 */
    @Schema(description = "运单号")
    private String businessWaybillNumber;

    /** 合计数量 */
    @Schema(description = "合计数量")
    private BigDecimal businessNumberProduction;

    /** 商品种类 */
    @Schema(description = "商品种类")
    private Integer businessNumberCategory;

    /** 包装方式 */
    @Schema(description = "包装方式")
    private String businessPackagingMethod;

    /** 承运人 */
    @Schema(description = "承运人")
    private String businessCarrierId;

    /** 合计数量 */
    @Schema(description = "合计数量")
    private BigDecimal businessTotalNumber;

    /** 合计金额 */
    @Schema(description = "合计金额")
    private BigDecimal businessTotalAmount;

    /** 折让金额 */
    @Schema(description = "折让金额")
    private BigDecimal businessDiscountAmount;

    /** 应付金额 */
    @Schema(description = "应付金额")
    private BigDecimal businessPayableAmount;

    /** 实付金额 */
    @Schema(description = "实付金额")
    private BigDecimal businessPayAmount;

    /** 收（付）款账户 */
    @Schema(description = "收（付）款账户")
    private String businessAccountId;

    /** 待付金额 */
    @Schema(description = "待付金额")
    private BigDecimal businessPendingAmount;

    /** 收付款期限 */
    @Schema(description = "收付款期限")
    private Date businessPaymentDeadline;

    /** 结算状态（0-未结算，1-已结算，2-部分结算） */
    @Schema(description = "结算状态（0-未结算，1-已结算，2-部分结算）")
    private String businessPaymentStatus;

    /** 业务摘要*/
    @Schema(description = "业务摘要")
    private String businessAbstract;

    /** 整单备注 */
    @Schema(description = "整单备注")
    private String businessRemark;

    /**结算业务IDS */
    @Schema(description = "结算业务IDS")
    private String businessBusinessIds;

    /**业务结算类型(0-收款,1-付款，2-转账) */
    @Schema(description = "业务结算类型(0-收款,1-付款，2-转账)")
    private String businessSettlementType;

    /**账户结算前余额*/
    @Schema(description = "账户结算前余额")
    private BigDecimal businessAccountBalanceBefore;

    /**账户结算后余额*/
    @Schema(description = "账户结算后余额")
    private BigDecimal businessAccountBalanceAfter;

    /** 业务状态 */
    @Schema(description = "业务状态")
    private String businessStatus;

    /** 扩展信息 */
    @Schema(description = "扩展信息")
    private String extJson;

    /** 数据归属 */
    @Schema(description = "数据归属")
    private String companyId;

}
